
CAP
´
ITULO 12. MCTEST VERS
˜
OES 4, 4.G E 5
Quest˜ao:
1 [[def:
2 import json, random, numpy as np
3
4 def direcoes(offset, dir):
5 """ M´etodo que retorna as dire¸c~oes adjacentes `a dire¸c~ao dada. """
6 dir1, dir2 = (dir - 1) % 8 + 1, (dir + 1) % 8 + 1
7 return (dir1, dir, dir2)
8
9 # Par^ametros utilizados no enunciado da quest~ao
10 #>>>> BEGIN
11 dir = random.choice([1,2,3,4,5,6,7,8])
12 direcaoAll = ["Norte","Nordeste","Oeste","Sudeste","Sul","Sudoeste","Leste","Noroeste"]
13 direcao = direcaoAll[dir-1]
14
15 maiormenor = random.choice(["maior", "menor"])
16 m, n = random.randrange(7, 9, 1), random.randrange(15, 21, 1)
17 Linhas, Colunas = m, n
18
19 #direcoes 0 1 2 3 4 5 6 7 8
20 offset = [[0,0],[-1,0],[-1,1],[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1]]
21 (dir1,dir0,dir2) = direcoes(offset,dir)
22 direcao_viz = "$a_"+str(dir1)+"$, $a_"+str(dir0)+"$, $a_"+str(dir2)+"$"
23 #<<<< END
24
25 A = (np.random.random((m, n)) * 10).astype(int)
26 B = (np.zeros(A.shape) - 1).astype(int)
27 for i in range(1, m - 1):
28 for j in range(1, n - 1):
29 if maiormenor == "menor":
30 if (A[i + offset[dir1][0], j + offset[dir1][1]] > A[i, j]
31 and A[i + offset[dir0][0], j + offset[dir0][1]] > A[i, j]
32 and A[i + offset[dir2][0], j + offset[dir2][1]] > A[i, j]):
33 B[i, j] = A[i, j]
34 else:
35 if (A[i + offset[dir1][0], j + offset[dir1][1]] < A[i, j]
36 and A[i + offset[dir0][0], j + offset[dir0][1]] < A[i, j]
37 and A[i + offset[dir2][0], j + offset[dir2][1]] < A[i, j]):
38 B[i, j] = A[i, j]
39
40 import hashlib
41 s =''.join([str(i) for i in A.flatten()]) # 2d to 1d to str
42 h = hashlib.md5(s.encode()) # create hash - arquivo ´unico
43 pathGrafico = 'figRosa(' + direcao + ')(' + maiormenor + ')(' + str(h.hexdigest()) + ')'
44 pathGraficoA, pathGraficoB = pathGrafico + 'a.png', pathGrafico + 'b.png'
45
46 drawMatrix(A, pathGraficoA)
47 drawMatrix(B, pathGraficoB)
48 ]]
C´odigo 12.7: Quest˜ao param´etrica com matriz – Parte 2: Bloco de c´odigo em Python.
Francisco de Assis Zampirolli MCTest 192